-- GCM
-- Create by zouyb
-- 地牢内垃圾回收管理

module("GCM", package.seeall);

-- 当玩家没有任何操作后的GC处理间隔
local GC_INTERVAL = 20;

-- 上次活动时间
local lastActiveTime = TimeM.getCurrentTime();

-- 内部函数声明
local checkGC;

-- 更新活动时间
function updateActiveTime()
    lastActiveTime = TimeM.getCurrentTime();
end

-- 启动地牢内垃圾回收管理
function start()
	-- 定时检查
    ScheduleM.createScheme("GCM", checkGC, 1, true)
	updateActiveTime();
end

-- 停止地牢内垃圾回收管理
function stop()
    ScheduleM.deleteScheme("GCM");
end

-- 定时检查
checkGC = function()
	local curTime = TimeM.getCurrentTime();
    if curTime - lastActiveTime > GC_INTERVAL then
		-- 进行一次垃圾回收
		collectgarbage("collect");
        lastActiveTime = curTime;
	end
end
